<?php
/*******************************************************************************

    FinalsClub.org is a platform for students and faculty to collaborate
    and share their knowledge with the world.

    Copyright (C) 2009  Andrew Magliozzi
 
    This file is a part of FinalsClub.org.

    FinalsClub.org is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
    To contact FinalsClub.org, send an email to info@finalsclub.org, or
    send mail to Finals Club, c/o Veritas Tutors, 1132 Massachusetts Avenue,
    Cambridge, MA 02138.

*******************************************************************************/
/**
 * LoginForm
 */
class LoginForm extends sfForm {
	
	public function setup() {
	    $this->setWidgets(array(
	      'referrer'   => new sfWidgetFormInputHidden(),
	      'login_name'      => new sfWidgetFormInput(),
	      'password'   => new sfWidgetFormInputPassword(),
	    ));
	 
	    $this->setValidators(array(
	      'referrer'   => new sfValidatorPass(),
	      'password'   => new sfValidatorString(array('max_length' => 40, 'required' => true)),
	      'login_name'      => new sfValidatorString(array('max_length' => 255, 'required' => true)),
	    ));
	 
	    $this->widgetSchema->setNameFormat('login[%s]');
	 
	    $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
	 
	    parent::setup();		
	}
	
	public function configure() {
	    $this->validatorSchema['login_name'] = new sfValidatorString(array('required' => true), 
	      array('invalid' => 'The username or email address is invalid', 'required' => 'An email address or username is required'));
	    
	    $this->validatorSchema['password'] = new sfValidatorString(array('max_length' => 40, 'required' => true),
	      array('required' => 'Please enter a password'));
						
		$this->mergePostValidator(
          new sfValidatorCallback(array('callback'  => array('LoginValidator', 'validate'),
                                        'arguments' => array()),
                                  array('invalid'  => 'This email or username password combination is incorrect')
			)		
		);
	}
	
}
